Media content is generally provided within a file or stream that conforms to a media container specification. A media container generally comprises the raw media samples (compressed audio and/or video frame data), as well as information required for proper playback, such as frame playback timing information. Media container formats that are based on the ISO Base Media File Format (MPEG-4 Part 12), such as .mp4, .mov and .3gp, are currently some one of the most prevalent file formats used for media streaming.
These file formats are typically organized in an indexed fashion. This indexing (which uses metadata) allows decoding and seeking to individual media samples (audio and/or video frames) within the file. The indexing generally registers complete size and position information for every sample (audio and/or video frames) in all tracks for the entire clip. The index is generally a required element of the file, contained in a single file section, and stored at the start or at the end of the file, depending on the application. Authoring content in these indexed formats via encoding or transcoding requires a full enumeration of the size and location of every frame.
For streaming applications, the index generally is transmitted as a single syntax element and must be received by a client player (and therefore fully defined and authored on the server) before playback can begin. The compressed audio and video frame data may be generated separately, on-the-fly and delivered to the client as needed (in real-time), but it must conform to the size and location values already transmitted in the index. Therefore, the compressed size and location of every frame must either be known or determined before streaming can be begin, such that the index can be authored and transmitted. These values cannot be changed afterwards. Consequently, indexed formats are much better suited for storage and archival than for real-time streaming delivery, yet a significant amount of media content is streamed in these container formats, such as .mp4 video delivered via HTTP progressive download.
A “fragmented MPEG-4” variant exists, which may partially avoid the above constraints. However, this fragmented format is not widely supported by mobile devices, thus limiting its usefulness.